package com.ruoyi.chatAi.mapper;

import com.ruoyi.chatAi.domain.ChatSession;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 聊天会话数据访问层
 *
 * @author ruoyi
 */
@Mapper
public interface ChatSessionMapper {


    /**
     * 查询用户的聊天会话列表
     *
     * @param userId 用户ID
     * @return 聊天会话集合
     */
    List<ChatSession> selectChatSessionsByUserId(@Param("userId") Long userId);

    /**
     * 新增聊天会话
     *
     * @param chatSession 聊天会话
     * @return 影响行数
     */
    int insertChatSession(ChatSession chatSession);

    /**
     * 修改聊天会话
     *
     * @param chatSession 聊天会话
     * @return 影响行数
     */
    int updateChatSession(ChatSession chatSession);

    /**
     * 删除聊天会话
     *
     * @param sessionId 聊天会话ID
     * @return 影响行数
     */
    int deleteChatSessionById(@Param("sessionId") String sessionId);

    /**
     * 批量删除聊天会话
     *
     * @param sessionIds 需要删除的数据ID
     * @return 影响行数
     */
    int deleteChatSessionByIds(String[] sessionIds);

    /**
     * 更新会话状态
     *
     * @param sessionId 会话ID
     * @param status 状态
     * @return 影响行数
     */
    int updateSessionStatus(@Param("sessionId") String sessionId, @Param("status") String status);

    /**
     * 更新会话标题
     *
     * @param sessionId 会话ID
     * @param title 标题
     * @return 影响行数
     */
    int updateSessionTitle(@Param("sessionId") String sessionId, @Param("title") String title);

    /**
     * 查询活跃会话数量
     *
     * @param userId 用户ID
     * @return 活跃会话数量
     */
    int countActiveSessionsByUserId(@Param("userId") Long userId);

}